package com.example.no1admin.mapper;

import com.example.no1admin.pojo.dto.packages.PackagesEditDTO;
import com.example.no1admin.pojo.entity.Packages;
import com.example.no1admin.pojo.vo.packages.PackageMoreVO;
import com.example.no1admin.pojo.vo.packages.PackagesDetailListItemVO;
import com.example.no1admin.pojo.vo.packages.PackagesDetailVO;
import com.example.no1admin.pojo.vo.packages.PackagesListItemVO;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
public interface PackagesMapper {

    /**
     * 添加套餐
     * @param packages 套餐数据
     * @return 受影响的行数，将返回成功删除的数据量
     */
    int insert(Packages packages);

    /**
     * 通过指定 id 去修改 品牌 的多个信息,
     * @param packagesEditDTO    套餐对象,通过if来进行动态sql操作
     * @return  返回 受影响行数, 成功修改数据,返回1 , 如果无此id对应的数据,则返回0
     */
    int updateById(PackagesEditDTO packagesEditDTO);



    /**
     * 根据套餐id删除对应的套餐数据
     * @param id 套餐id
     * @return 受影响的行数，成功删除数据时，将返回1，如果id对应的数据不存在，则返回0
     */
    int deleteById(Long id);

    /**
     * 根据若干个套餐id，批量删除套餐数据
     * @param ids 期望删除的若干个套餐数据的id
     * @return 受影响的行数，将返回成功删除的数据量
     */
    int deleteByIds(Long... ids);

    /**
     * 根据套餐 Name 统计此Name 对应的套餐数据的数量
     * @param Name 套餐packageName
     * @return 此套餐packageName对应的套餐数据的数量
     */
    int countByName(String  Name);

    /**
     * 根据套餐id查询套餐详情
     * @param id 套餐id
     * @return 此套餐id对应的套餐数据
     */
    PackagesDetailVO getById(Long id);
    /**
     *查询套餐列表
     * @return 套餐列表的集合
     */
    List<PackagesListItemVO> list();

    List<PackageMoreVO> listItem();


}
